//
//  UIImage+image.m
//  Runtime的使用
//
//  Created by caominglei on 2018/1/29.
//  Copyright © 2018年 caominglei. All rights reserved.
//

#import "UIImage+image.h"
#import <objc/message.h>

@implementation UIImage (image)
//加载这个分类的时候调用
+ (void)load
{
    NSLog(@"%s",__func__);
    //交换方法实现 两种方式：
    //1获取对象方法-class_getInstanceMethod(<#Class  _Nullable __unsafe_unretained cls#>, <#SEL  _Nonnull name#>)
    //2获取方法实现-class_getMethodImplementation(<#Class  _Nullable __unsafe_unretained cls#>, <#SEL  _Nonnull name#>)
    //3获取类方法class_getClassMethod(<#Class  _Nullable __unsafe_unretained cls#>, <#SEL  _Nonnull name#>)
    
    /*
     class--获取哪个类方法
     sel--方法编号,根据sel去对应的类找方法
     
     */
    Method imageNameMethod = class_getClassMethod([UIImage class], @selector(imageNamed:));
    Method original_imageNameMethod = class_getClassMethod([UIImage class], @selector(original_image:));

    method_exchangeImplementations(imageNameMethod, original_imageNameMethod);
}
/**
 写一个方法代替实现要调用的方法；分类里不能用super 没有父类------注意：之前 两个方法已经交换！！！
 */
+ (UIImage *)original_image:(NSString *)imageName
{
    //加载图片
    UIImage *image = [UIImage original_image:imageName];
    //判断功能
    if(!image){
        NSLog(@"加载图片为空！");
    }
    return image;
}
@end
